hhkb
모의해킹

호스트기반모의해킹_07_Nmap 스크립트 엔진

작성자 : Heehyeon Yoo|2025-11-19
# Nmap# NSE# Lua# 자동화# 취약점 진단

1. 개요와 구조(Overview & Structure)

Nmap 스크립트 엔진(NSE)은 Nmap의 기능을 확장하는 강력한 자동화 도구이다. 단순한 포트 스캔을 넘어 취약점 진단, 고급 정보 수집, 백도어 탐지 등 복잡한 작업을 수행할 수 있다.

1.1 스크립트 저장소 디렉토리(Directory)

  • 경로: 리눅스 기준 /usr/share/nmap/scripts/에 저장된다.
  • 구성: 약 600개 이상의 스크립트(.nse)가 기본 제공된다.
  • 카테고리: default, safe, intrusive, vuln, exploit, auth, brute 등으로 분류된다.
    • nmap -sCdefault 카테고리 스크립트를 실행한다.

2. 심화 사용법(Advanced Usage)

2.1 특정 스크립트 지정 실행

기본 스크립트 외에 특정 목적을 가진 스크립트만 콕 집어 실행할 수 있다.

  • 문법: --script [script_name]
  • 예시: SSH 인증 방식 확인
    nmap -p 22 --script ssh-auth-methods [Target_IP]
    
    • 결과: publickey, password 등 지원하는 인증 방식이 출력된다.

2.2 인자 전달(Passing Arguments)

스크립트 실행 시 필요한 파라미터(Parameter)를 전달할 수 있다.

  • 문법: --script-args [key=value]
  • 예시: SSH 사용자 리스트 파일 지정
    nmap -p 22 --script ssh-brute --script-args userdb=/root/users.txt [Target_IP]
    

Tip: 각 스크립트의 사용법과 인자는 nmap.org 공식 문서나 nmap --script-help [script_name] 명령어로 확인할 수 있다.

3. 외부 스크립트 활용(Third-Party Scripts)

Nmap 기본 스크립트에 없는 최신 취약점이나 특정 CMS 진단이 필요할 때, GitHub 등에서 외부 스크립트를 가져와 실행할 수 있다.

3.1 워드프레스 테마 탐지(WordPress Theme Enumeration) 예시

기본 스크립트로 해결되지 않을 때, 커뮤니티에서 개발된 스크립트를 활용한다.

  1. 검색(Finding): 구글이나 GitHub에서 wordpress theme enumeration nse 등으로 검색.
  2. 분석(Analysis): 스크립트(Lua 코드)를 열어 동작 원리를 파악한다.(나쁜 코드가 없는지 확인)
    • 예: 사전 파일(Dictionary)을 불러와 URL 브루트포싱을 수행하는 로직 확인.
  3. 설치(Installation): scripts 디렉토리에 .nse 파일을 다운로드 또는 생성(붙여넣기)한다.
  4. 실행(Execution):
    nmap -p 80 --script http-wordpress-themes [Target_IP]
    

4. 커스텀 스크립트 개발(Custom Script Development)

NSE는 Lua(루아) 언어로 작성된다. 문법이 파이썬(Python)과 유사하여 배우기 쉽고, 자신만의 도구를 만들기 용이하다.

4.1 스크립트 구조

  1. Head: 스크립트 설명, 카테고리, 의존성 선언.
  2. Rule: 실행 조건 정의(예: 포트 80이 열려 있을 때만 실행).
  3. Action: 실제 수행할 로직(예: HTTP 요청 전송 -> 응답 파싱 -> 결과 반환).

4.2 프로그래밍 실습 제안

거창한 것이 아니다. "특정 URL 뒤에 파일명을 붙여서 요청을 보내고(Request), 200 OK가 오는지 확인(Response Analysis)"하는 간단한 로직도 훌륭한 NSE가 된다.

  • 실무 활용: 사내 특화된 애플리케이션 진단이나, 막 공개된 Zero-day 취약점 탐지 코드를 NSE로 변환하여 대규모 스캔에 활용한다.